/*
 * Created on 2008-3-14
 *
 * TODO
 */
package jacky.lanlan.song.extension.struts.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import jacky.lanlan.song.closure.Factory;
import jacky.lanlan.song.extension.struts.resource.ResourcePersistence;

/**
 * 标记这个执行方法可以接受文件上传。
 * <p>
 * 插件会自动侦测到 {@link FormFile}，然后通过指定的工厂创建 {@link ResourcePersistence}，并 委托它完成持久化工作。
 * <p>
 * <i style="color:red">只能用于@POJOAction。</i>
 * 
 * @see ResourcePersistence
 * @author Jacky.Song
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Upload {
	
	/**
	 * 用于产生持久化器的工厂，插件将缓存工厂创建的 ResourcePersistence。
	 */
	Class<? extends Factory<ResourcePersistence>> factory();
	/*
	 * 通过工厂，就可以让客户端自己决定产生 ResourcePersistence 方式，比如手工new或从Spring等容器获取。
	 * 而对于需要持久化服务的 ResourcePersistence 来说，可能最好的方式是从IoC中获取，所以这样设计，以保证
	 * 给客户端最大的灵活性。
	 */
	
}
